node editor: Manually unrealize all created renderers
authorTimm Bäder <mail@baedert.org>
Sat, 13 Jul 2019 07:37:47 +0000 (09:37 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 13 Jul 2019 07:37:47 +0000 (09:37 +0200)
This has not been a problem before since we were leaking them.

demos/node-editor/node-editor-window.c

index 08559f167c77300891c9ec5f4ba556930e4d421d..9e880354f3054b5b429f1472aaa05453d543b90f 100644 (file)
@@ -707,6 +707,14 @@ static void
 node_editor_window_unrealize (GtkWidget *widget)
 {
   NodeEditorWindow *self = NODE_EDITOR_WINDOW (widget);
+  guint i;
+
+  for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (self->renderers)); i ++)
+    {
+      gpointer item = g_list_model_get_item (G_LIST_MODEL (self->renderers), i);
+      gsk_renderer_unrealize (gtk_renderer_paintable_get_renderer (item));
+      g_object_unref (item);
+    }
 
   g_list_store_remove_all (self->renderers);